const { Sequelize, Model, DataTypes } = require('sequelize');

// 方法 3: 分别传递参数 (其它数据库)
const sequelize = new Sequelize('test', 'big-screen', '123456', {
  host: '10.11.3.90',
  port: 3306,
  dialect: 'mesql', /* 选择 'mysql' | 'mariadb' | 'postgres' | 'mssql' 其一 */
});

class Godzilla extends Model {}

Godzilla.init(
  {
    // 在这里定义模型属性
    firstName: {
      type: DataTypes.STRING,
      allowNull: false
    },
    lastName: {
      type: DataTypes.STRING
      // allowNull 默认为 true
    }
  },
  {
    // 这是其他模型参数
    sequelize, // 我们需要传递连接实例
    modelName: 'Godzilla', // 我们需要选择模型名称
    timestamps: false, // 不要时间戳
    freezeTableName: true // 禁止表名自动变复数
  }
)


;(async function() {
  try {
    await sequelize.authenticate();
    console.log('Connection has been established successfully.');
    await Godzilla.sync() //- 如果表不存在,则创建该表(如果已经存在,则不执行任何操作)
    await Godzilla.create({ firstName: '金刚', lastName: '太平洋' })
    // await sequelize.query('SELECT * FROM `test`.`Godzilla`').then(function (data) {
    //   console.log('data', data)
    // })
    // 关闭连接
    await sequelize.close()
  } catch (error) {
    console.error('Unable to connect to the database:', error);
    await sequelize.close()
  }
})()